package com.hello.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hello.dto.PLikeDTO;
import com.hello.entity.PLikes;
import com.hello.mapper.PLikesMapper;
import com.hello.service.IPLikesService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.List;

@Slf4j
@Service
public class PLikeServiceImpl extends ServiceImpl<PLikesMapper, PLikes> implements IPLikesService {
    @Override
    public List<PLikes> getNewPlikes(Long user_id) {
        QueryWrapper<PLikes> wrapper = new QueryWrapper<PLikes>()
                .select("*")
                .eq("host_id", user_id);
        List<PLikes> pLikes = baseMapper.selectList(wrapper);
        return pLikes;
    }

    @Override
    public Long getLikesCount(Long user_id, Integer post_order){
        QueryWrapper<PLikes> wrapper = new QueryWrapper<PLikes>()
                .select("*")
                .eq("host_id",user_id)
                .eq("post_order",post_order);
        Long count = baseMapper.selectCount(wrapper);
        return count;
    }

    @Override
    public boolean haveLiked(Long user_id, Integer post_order, Long liker_id){
        QueryWrapper<PLikes> wrapper = new QueryWrapper<PLikes>()
                .select("*")
                .eq("host_id",user_id)
                .eq("post_order",post_order)
                .eq("liker_id",liker_id);
        boolean result = baseMapper.exists(wrapper);
        return result;
    }

    @Override
    public List<PLikes> getMyPlikes(Long user_id){
        QueryWrapper<PLikes> wrapper = new QueryWrapper<PLikes>()
                .select("*")
                .eq("liker_id", user_id);
        List<PLikes> pLikes = baseMapper.selectList(wrapper);
        return pLikes;
    }

    /**
     *增加点赞
     * @param pLikeDTO
     * @return
     */
    @Override
    public boolean addPLikes(PLikeDTO pLikeDTO){
        PLikes pLikes = new PLikes();
        BeanUtils.copyProperties(pLikeDTO,pLikes);
        pLikes.setLikeTime(LocalDateTime.now());
        int num  = baseMapper.insert(pLikes);
        return num>0?true:false;
    }

    @Override
    public boolean deletePLikes(PLikeDTO pLikeDTO){
        //PLikes pLikes = new PLikes();
        //BeanUtils.copyProperties(pLikeDTO,pLikes);
        QueryWrapper<PLikes> wrapper = new QueryWrapper<>();
        wrapper.eq("liker_id",pLikeDTO.getLikerId())
                .eq("post_order",pLikeDTO.getPostOrder()); //构建删除条件
        int num  = baseMapper.delete(wrapper);
        return num>0?true:false;

    }
}
